package com.auxgroup.smarthome.utils.excel.util;

import org.apache.poi.ss.usermodel.Cell;
import org.apache.poi.ss.usermodel.Row;
import org.apache.poi.ss.usermodel.Sheet;
import org.apache.poi.ss.usermodel.Workbook;

import java.io.IOException;

/**
 * 一些工具方法
 * 
 * @author zxh
 * @since 2017年5月1日修补
 * 
 */
public class ExcelUtil {
	private ExcelUtil(){}

	/**
	 * 获取工作表的行数
	 * 
	 * @param sheet
	 *            Sheet表对象
	 * @return 表行数
	 */
	public static int getLastRowNum(Sheet sheet) {
		int lastRowNum = sheet.getLastRowNum();
		if (lastRowNum == 0) {
			lastRowNum = sheet.getPhysicalNumberOfRows() - 1;
		}
		return lastRowNum;
	}

	/**
	 * 获取该行第一个单元格的下标
	 * 
	 * @param row
	 *            行对象
	 * @return 第一个单元格下标，从0开始
	 */
	public static int getFirstCellNum(Row row) {
		return row.getFirstCellNum();
	}

	/**
	 * 获取该行最后一个单元格的下标
	 * 
	 * @param row
	 *            行对象
	 * @return 最后一个单元格下标，从0开始
	 */
	public static int getLastCellNum(Row row) {
		return row.getLastCellNum();
	}

	/**
	 * 获取POI的行对象
	 * 
	 * @param sheet
	 *            表对象
	 * @param row
	 *            行号，从0开始
	 * @return
	 */
	public static Row getRow(Sheet sheet, int row) {
		if (row < 0) {
			row = 0;
		}
		Row r = sheet.getRow(row);
		if (r == null) {
			r = sheet.createRow(row);
		}
		return r;
	}

	/**
	 * 获取单元格对象
	 * 
	 * @param sheet
	 *            表对象
	 * @param row
	 *            行，从0开始
	 * @param col
	 *            列，从0开始
	 * @return row行col列的单元格对象
	 */
	public static Cell getCell(Sheet sheet, int row, int col) {
		Row r = getRow(sheet, row);
		return getCell(r, col);
	}

	/**
	 * 获取单元格对象
	 * 
	 * @param row
	 *            行，从0开始
	 * @param col
	 *            列，从0开始
	 * @return 指定行对象上第col行的单元格
	 */
	public static Cell getCell(Row row, int col) {
		if (col < 0) {
			col = 0;
		}
		Cell c = row.getCell(col);
		c = c == null ? row.createCell(col) : c;
		return c;
	}

	/**
	 * 获取工作表对象
	 * 
	 * @param workbook
	 *            工作簿对象
	 * @param index
	 *            表下标，从0开始
	 * @return
	 */
	public static Sheet getSheet(Workbook workbook, int index) {
		if (index < 0) {
			index = 0;
		}
		if (index > workbook.getNumberOfSheets() - 1) {
			workbook.createSheet();
			return workbook.getSheetAt(workbook.getNumberOfSheets() - 1);
		} else {
			return workbook.getSheetAt(index);
		}
	}

	/**
	 * 下载文件
	 * 
	 * @param workBook
	 * @param fileName
	 * @param response
	 * @throws IOException
	 */
//	public static void downloadExcel(Workbook workBook, String fileName,
//			HttpServletResponse response) throws IOException {
//		response.setContentType("application/msexcel;");
//		if(workBook instanceof HSSFWorkbook) {
//		     response.setHeader("Content-Disposition", "attachment;filename="
//				  + URLEncoder.encode(fileName, "UTF-8")+".xls");
//		} else if (workBook instanceof XSSFWorkbook){
//			  response.setHeader("Content-Disposition", "attachment;filename="
//					  + URLEncoder.encode(fileName, "UTF-8")+".xlsx");
//		} else {
//			System.err.print("不支持的office版本");
//			return;
//		}
//		OutputStream os = null;
//		try {
//			os = response.getOutputStream();
//			workBook.write(os);
//			os.flush();
//		} catch (Exception e) {
//			e.printStackTrace();
//		} finally {
//			if (os != null)
//				os.close();
//		}
//	}

	

}
